added ::modal argument. (gtk_window_hide): reset window->modal from the
authorTim Janik <timj@gtk.org>
Sat, 20 Feb 1999 19:00:53 +0000 (19:00 +0000)
committerTim Janik <timj@src.gnome.org>
Sat, 20 Feb 1999 19:00:53 +0000 (19:00 +0000)
Sat Feb 20 19:44:36 1999  Tim Janik  <timj@gtk.org>

        * gtk/gtkwindow.c: added ::modal argument.
        (gtk_window_hide): reset window->modal from the current grab state
        (this is only relevant when grab_add/grab_remove is called on the
        window by bypassing gtk_window_set_modal).
        (gtk_window_remove_embedded_xid):
        (gtk_window_add_embedded_xid): don't use g_print() but g_message()
        within #ifdef G_ENABLE_DEBUG. when the hack got these functions
        added (ChangeLog doesn't know them)?

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkwindow.c
gtk/gtkwindow.h

index 656af5745c2fefa23daa470b68c080d0ac3e2f65..c520576ef2376ca1c0d57fbc819a220bf999d46c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+Sat Feb 20 19:44:36 1999  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwindow.c: added ::modal argument.
+       (gtk_window_hide): reset window->modal from the current grab state
+       (this is only relevant when grab_add/grab_remove is called on the
+       window by bypassing gtk_window_set_modal).
+       (gtk_window_remove_embedded_xid): 
+       (gtk_window_add_embedded_xid): don't use g_print() but g_message()
+       within #ifdef G_ENABLE_DEBUG. when the hack got these functions
+       added (ChangeLog doesn't know them)?
+
 Fri Feb 19 14:59:45 EST 1999 Sergey Panov  <sipan@mit.edu>
 
         * gtk/gtkrc,gtk/gtkrc.ja, gtk/gtkrc.ko,
index 656af5745c2fefa23daa470b68c080d0ac3e2f65..c520576ef2376ca1c0d57fbc819a220bf999d46c 100644 (file)
@@ -1,3 +1,14 @@
+Sat Feb 20 19:44:36 1999  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwindow.c: added ::modal argument.
+       (gtk_window_hide): reset window->modal from the current grab state
+       (this is only relevant when grab_add/grab_remove is called on the
+       window by bypassing gtk_window_set_modal).
+       (gtk_window_remove_embedded_xid): 
+       (gtk_window_add_embedded_xid): don't use g_print() but g_message()
+       within #ifdef G_ENABLE_DEBUG. when the hack got these functions
+       added (ChangeLog doesn't know them)?
+
 Fri Feb 19 14:59:45 EST 1999 Sergey Panov  <sipan@mit.edu>
 
         * gtk/gtkrc,gtk/gtkrc.ja, gtk/gtkrc.ko,
index 656af5745c2fefa23daa470b68c080d0ac3e2f65..c520576ef2376ca1c0d57fbc819a220bf999d46c 100644 (file)
@@ -1,3 +1,14 @@
+Sat Feb 20 19:44:36 1999  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwindow.c: added ::modal argument.
+       (gtk_window_hide): reset window->modal from the current grab state
+       (this is only relevant when grab_add/grab_remove is called on the
+       window by bypassing gtk_window_set_modal).
+       (gtk_window_remove_embedded_xid): 
+       (gtk_window_add_embedded_xid): don't use g_print() but g_message()
+       within #ifdef G_ENABLE_DEBUG. when the hack got these functions
+       added (ChangeLog doesn't know them)?
+
 Fri Feb 19 14:59:45 EST 1999 Sergey Panov  <sipan@mit.edu>
 
         * gtk/gtkrc,gtk/gtkrc.ja, gtk/gtkrc.ko,
index 656af5745c2fefa23daa470b68c080d0ac3e2f65..c520576ef2376ca1c0d57fbc819a220bf999d46c 100644 (file)
@@ -1,3 +1,14 @@
+Sat Feb 20 19:44:36 1999  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwindow.c: added ::modal argument.
+       (gtk_window_hide): reset window->modal from the current grab state
+       (this is only relevant when grab_add/grab_remove is called on the
+       window by bypassing gtk_window_set_modal).
+       (gtk_window_remove_embedded_xid): 
+       (gtk_window_add_embedded_xid): don't use g_print() but g_message()
+       within #ifdef G_ENABLE_DEBUG. when the hack got these functions
+       added (ChangeLog doesn't know them)?
+
 Fri Feb 19 14:59:45 EST 1999 Sergey Panov  <sipan@mit.edu>
 
         * gtk/gtkrc,gtk/gtkrc.ja, gtk/gtkrc.ko,
index 656af5745c2fefa23daa470b68c080d0ac3e2f65..c520576ef2376ca1c0d57fbc819a220bf999d46c 100644 (file)
@@ -1,3 +1,14 @@
+Sat Feb 20 19:44:36 1999  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwindow.c: added ::modal argument.
+       (gtk_window_hide): reset window->modal from the current grab state
+       (this is only relevant when grab_add/grab_remove is called on the
+       window by bypassing gtk_window_set_modal).
+       (gtk_window_remove_embedded_xid): 
+       (gtk_window_add_embedded_xid): don't use g_print() but g_message()
+       within #ifdef G_ENABLE_DEBUG. when the hack got these functions
+       added (ChangeLog doesn't know them)?
+
 Fri Feb 19 14:59:45 EST 1999 Sergey Panov  <sipan@mit.edu>
 
         * gtk/gtkrc,gtk/gtkrc.ja, gtk/gtkrc.ko,
index 656af5745c2fefa23daa470b68c080d0ac3e2f65..c520576ef2376ca1c0d57fbc819a220bf999d46c 100644 (file)
@@ -1,3 +1,14 @@
+Sat Feb 20 19:44:36 1999  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwindow.c: added ::modal argument.
+       (gtk_window_hide): reset window->modal from the current grab state
+       (this is only relevant when grab_add/grab_remove is called on the
+       window by bypassing gtk_window_set_modal).
+       (gtk_window_remove_embedded_xid): 
+       (gtk_window_add_embedded_xid): don't use g_print() but g_message()
+       within #ifdef G_ENABLE_DEBUG. when the hack got these functions
+       added (ChangeLog doesn't know them)?
+
 Fri Feb 19 14:59:45 EST 1999 Sergey Panov  <sipan@mit.edu>
 
         * gtk/gtkrc,gtk/gtkrc.ja, gtk/gtkrc.ko,
index 656af5745c2fefa23daa470b68c080d0ac3e2f65..c520576ef2376ca1c0d57fbc819a220bf999d46c 100644 (file)
@@ -1,3 +1,14 @@
+Sat Feb 20 19:44:36 1999  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwindow.c: added ::modal argument.
+       (gtk_window_hide): reset window->modal from the current grab state
+       (this is only relevant when grab_add/grab_remove is called on the
+       window by bypassing gtk_window_set_modal).
+       (gtk_window_remove_embedded_xid): 
+       (gtk_window_add_embedded_xid): don't use g_print() but g_message()
+       within #ifdef G_ENABLE_DEBUG. when the hack got these functions
+       added (ChangeLog doesn't know them)?
+
 Fri Feb 19 14:59:45 EST 1999 Sergey Panov  <sipan@mit.edu>
 
         * gtk/gtkrc,gtk/gtkrc.ja, gtk/gtkrc.ko,
index 3ce41b5e97b0afe7129fee66f80226f95e435d32..0423f77a428ae3e3551b9a98fa8858d004cda55d 100644 (file)
@@ -39,6 +39,7 @@ enum {
   ARG_AUTO_SHRINK,
   ARG_ALLOW_SHRINK,
   ARG_ALLOW_GROW,
+  ARG_MODAL,
   ARG_WIN_POS
 };
 
@@ -160,6 +161,7 @@ gtk_window_class_init (GtkWindowClass *klass)
   gtk_object_add_arg_type ("GtkWindow::auto_shrink", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_AUTO_SHRINK);
   gtk_object_add_arg_type ("GtkWindow::allow_shrink", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_ALLOW_SHRINK);
   gtk_object_add_arg_type ("GtkWindow::allow_grow", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_ALLOW_GROW);
+  gtk_object_add_arg_type ("GtkWindow::modal", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_MODAL);
   gtk_object_add_arg_type ("GtkWindow::window_position", GTK_TYPE_WINDOW_POSITION, GTK_ARG_READWRITE, ARG_WIN_POS);
 
   window_signals[SET_FOCUS] =
@@ -258,6 +260,9 @@ gtk_window_set_arg (GtkObject  *object,
       window->allow_grow = (GTK_VALUE_BOOL (*arg) != FALSE);
       gtk_window_set_hints (GTK_WIDGET (window), &GTK_WIDGET (window)->requisition);
       break;
+    case ARG_MODAL:
+      gtk_window_set_modal (window, GTK_VALUE_BOOL (*arg));
+      break;
     case ARG_WIN_POS:
       gtk_window_set_position (window, GTK_VALUE_ENUM (*arg));
       break;
@@ -292,6 +297,9 @@ gtk_window_get_arg (GtkObject  *object,
     case ARG_ALLOW_GROW:
       GTK_VALUE_BOOL (*arg) = window->allow_grow;
       break;
+    case ARG_MODAL:
+      GTK_VALUE_BOOL (*arg) = window->modal;
+      break;
     case ARG_WIN_POS:
       GTK_VALUE_ENUM (*arg) = window->position;
       break;
@@ -470,18 +478,21 @@ gtk_window_activate_default (GtkWindow      *window)
 }
 
 void
-gtk_window_set_modal (GtkWindow *window, gboolean modal)
+gtk_window_set_modal (GtkWindow *window,
+                     gboolean   modal)
 {
   g_return_if_fail (window != NULL);
   g_return_if_fail (GTK_IS_WINDOW (window));
 
+  modal = modal != FALSE;
+
   /* If the widget was showed already, adjust it's grab state */
-  if (GTK_WIDGET_VISIBLE(GTK_WIDGET(window)))
+  if (GTK_WIDGET_VISIBLE (window) && window->modal != modal)
     {
-      if (window->modal && !modal)
-       gtk_grab_remove (GTK_WIDGET(window));
-      else if (!window->modal && modal)
-       gtk_grab_add (GTK_WIDGET(window));
+      if (modal)
+       gtk_grab_add (GTK_WIDGET (window));
+      else
+       gtk_grab_remove (GTK_WIDGET (window));
     }
   
   window->modal = modal;
@@ -494,8 +505,10 @@ gtk_window_add_embedded_xid (GtkWindow *window, guint xid)
 
   g_return_if_fail (window != NULL);
   g_return_if_fail (GTK_IS_WINDOW (window));
-  
-  g_print ("add %#x\n", xid);
+
+#ifdef G_ENABLE_DEBUG
+  g_message ("add embedded xid %#x\n", xid);
+#endif
 
   embedded_windows = gtk_object_get_data (GTK_OBJECT (window), "gtk-embedded");
   if (embedded_windows)
@@ -519,8 +532,10 @@ gtk_window_remove_embedded_xid (GtkWindow *window, guint xid)
   g_return_if_fail (window != NULL);
   g_return_if_fail (GTK_IS_WINDOW (window));
   
-  g_print ("remove %#x\n", xid);
-
+#ifdef G_ENABLE_DEBUG
+  g_message ("remove embedded xid %#x\n", xid);
+#endif
+  
   embedded_windows = gtk_object_get_data (GTK_OBJECT (window), "gtk-embedded");
   if (embedded_windows)
     gtk_object_remove_no_notify_by_id (GTK_OBJECT (window), 
@@ -755,23 +770,27 @@ gtk_window_show (GtkWidget *widget)
   gtk_container_check_resize (GTK_CONTAINER (widget));
   gtk_widget_map (widget);
 
-  if (GTK_WINDOW(widget)->modal)
-      gtk_grab_add(widget);
-      
+  if (GTK_WINDOW (widget)->modal)
+    gtk_grab_add (widget);
 }
 
 static void
 gtk_window_hide (GtkWidget *widget)
 {
+  GtkWindow *window;
+
   g_return_if_fail (widget != NULL);
   g_return_if_fail (GTK_IS_WINDOW (widget));
 
+  window = GTK_WINDOW (widget);
+
   GTK_WIDGET_UNSET_FLAGS (widget, GTK_VISIBLE);
   gtk_widget_unmap (widget);
 
-  if (GTK_WINDOW(widget)->modal)
-      gtk_grab_remove(widget);
+  window->modal = GTK_WIDGET_HAS_GRAB (window);
 
+  if (window->modal)
+    gtk_grab_remove (widget);
 }
 
 static void
index fd307fae34b527c792af0b693a289b6612b952d9..0a360ecac69137b99f819f2696a1fbdabc5764ab 100644 (file)
@@ -114,16 +114,18 @@ void       gtk_window_set_geometry_hints       (GtkWindow           *window,
  * gtk_widget_set_usize() overrides the requisition, so sets a minimum
  * size, while this only sets the size requested from the WM.
  */
-void       gtk_window_set_default_size         (GtkWindow            *window,
-                                               gint                  width,
-                                               gint                  height);
+void       gtk_window_set_default_size         (GtkWindow           *window,
+                                               gint                 width,
+                                               gint                 height);
 
 /* If window is set modal, input will be grabbed when show and released when hide */
 void       gtk_window_set_modal                (GtkWindow           *window,
-                                                gboolean modal);
+                                                gboolean             modal);
 
-void gtk_window_remove_embedded_xid (GtkWindow *window, guint xid);
-void gtk_window_add_embedded_xid    (GtkWindow *window, guint xid);
+void       gtk_window_remove_embedded_xid      (GtkWindow           *window,
+                                               guint                xid);
+void       gtk_window_add_embedded_xid         (GtkWindow           *window,
+                                               guint                xid);
 
 #ifdef __cplusplus
 }